home *** CD-ROM | disk | FTP | other *** search
/ Atari Mega Archive 1 / Atari Mega Archive - Volume 1.iso / tex / td187src.lzh / MAGICBIO.I < prev    next >
Text File  |  1991-06-10  |  4KB  |  208 lines

  1. (*######################################################################
  2.                                                                         
  3.   MAGIC         Modula's  All purpose  GEM  Interface  Cadre
  4.                 ¯         ¯            ¯    ¯          ¯
  5. ########################################################################
  6.  
  7.   BIOS          Basic Input Output System       Interface for Modula-2
  8.  
  9.                 Implementation für Megamax-Modula-2
  10.  
  11. ########################################################################
  12.   V2.00  16.10.90  Peter Hellinger      Anpassung an neues MagicSys
  13.   V1.04  05.08.90       Peter Hellinger
  14.   V1.00  (C) by         Peter Hellinger
  15. ######################################################################*)
  16.  
  17. IMPLEMENTATION MODULE MagicBIOS;
  18.  
  19. FROM SYSTEM IMPORT WORD, ADDRESS, ADR, ASSEMBLER;
  20. FROM MagicSys   IMPORT  Nil, Null,
  21.                         Bit0, Bit1, Bit2, Bit3, Bit4, Bit5, Bit6, Bit7,
  22.                         Bit8, Bit9, Bit10, Bit11, Bit12, Bit13, Bit14, Bit15,
  23.                         Byte, ByteSet,
  24.                         sWORD, sINTEGER, sCARDINAL, sBITSET,
  25.                         lWORD, lINTEGER, lCARDINAL, lBITSET;
  26. IMPORT MagicSys;
  27.  
  28.  
  29.  
  30. VAR lc: lCARDINAL;
  31.     li: lINTEGER;
  32.     lb: lBITSET;
  33.     i:  sINTEGER;
  34.     c:  sCARDINAL;
  35.     b:  sBITSET;
  36.     a:  ADDRESS;
  37.     x:  sCARDINAL;
  38.  
  39.  
  40. PROCEDURE Getmpb (VAR mpb: ADDRESS);
  41. BEGIN
  42.  ASSEMBLER
  43.   MOVE.L  mpb(A6), -(SP)
  44.   MOVE    #0, -(SP)
  45.   TRAP    #13
  46.   ADDQ.L  #6, SP
  47.  END;
  48. END Getmpb;
  49.  
  50.  
  51. PROCEDURE Bconstat (device: sINTEGER): BOOLEAN;
  52. BEGIN
  53.  ASSEMBLER
  54.   MOVE.W  device(A6), -(SP)
  55.   MOVE    #1, -(SP)
  56.   TRAP    #13
  57.   ADDQ.L  #4, SP
  58.   MOVE.W  D0, c
  59.  END;
  60.  RETURN c # 0;
  61. END Bconstat;
  62.  
  63.  
  64. PROCEDURE Bconin (device: sINTEGER): lCARDINAL;
  65. BEGIN
  66. (** Original, fehlerhaft, korrigiert JP-91
  67.  ASSEMBLER
  68.   MOVE.W  device(A6), -(SP)
  69.   MOVE    #2, -(SP)
  70.   TRAP    #13
  71.   ADDQ.L  #4, SP
  72.   MOVE.W  D0, lc
  73.  END;
  74. **)
  75.  ASSEMBLER
  76.   MOVE.W  device(A6), -(SP)
  77.   MOVE    #2, -(SP)
  78.   TRAP    #13
  79.   ADDQ.L  #4, SP
  80.   MOVE.L  D0, lc
  81.  END;
  82.  RETURN lc;
  83. END Bconin;
  84.  
  85.  
  86. PROCEDURE Bconout (device: sINTEGER; c: CHAR);
  87. BEGIN
  88.  x:= ORD (c);
  89.  ASSEMBLER
  90.   MOVE.W  x, -(SP)
  91.   MOVE.W  device(A6), -(SP)
  92.   MOVE    #3, -(SP)
  93.   TRAP    #13
  94.   ADDQ.L  #6, SP
  95.  END;
  96. END Bconout;
  97.  
  98.  
  99. PROCEDURE Rwabs (rw: sINTEGER; buf: ADDRESS; count, recno, dev: sINTEGER): lINTEGER;
  100. BEGIN
  101.  ASSEMBLER
  102.   MOVE.W  dev(A6), -(SP)      
  103.   MOVE.W  recno(A6), -(SP)
  104.   MOVE.W  count(A6), -(SP)
  105.   MOVE.L  buf(A6), -(SP)
  106.   MOVE.W  rw(A6), -(SP)
  107.   MOVE    #4, -(SP)
  108.   TRAP    #13
  109.   LEA     $E(SP), SP
  110.   MOVE.L  D0, li
  111.  END;
  112.  RETURN li;
  113. END Rwabs;
  114.  
  115.  
  116. PROCEDURE Setexc (vecnum: sINTEGER; vec: ADDRESS): ADDRESS;
  117. BEGIN
  118.  ASSEMBLER
  119.   MOVE    vec(A6), -(SP)
  120.   MOVE.W  vecnum(A6), -(SP);
  121.   MOVE    #5, -(SP)
  122.   TRAP    #13
  123.   ADDQ.L  #8, SP
  124.   MOVE.L  D0, a
  125.  END;
  126.  RETURN a;
  127. END Setexc;
  128.  
  129.  
  130. PROCEDURE Tickcal(): lCARDINAL;
  131. BEGIN
  132.  ASSEMBLER
  133.   MOVE    #6, -(SP)
  134.   TRAP    #13
  135.   ADDQ.L  #2, SP
  136.   MOVE.L  D0, lc
  137.  END;
  138.  RETURN lc;
  139. END Tickcal;
  140.  
  141.  
  142. PROCEDURE Getbpb (drive: sINTEGER): ADDRESS;
  143. BEGIN
  144.  ASSEMBLER
  145.   MOVE.W  drive(A6), -(SP)  
  146.   MOVE    #7, -(SP)
  147.   TRAP    #13
  148.   ADDQ.L  #4, SP
  149.   MOVE.L  D0, a
  150.  END; 
  151.  RETURN a;
  152. END Getbpb;
  153.  
  154.  
  155. PROCEDURE Bcostat (device: sINTEGER): BOOLEAN;
  156. BEGIN
  157.  ASSEMBLER
  158.   MOVE.W  device(A6), -(SP)
  159.   MOVE    #8, -(SP)
  160.   TRAP    #13
  161.   ADDQ.L  #4, SP
  162.   MOVE.W  D0, c
  163.  END;
  164.  RETURN c # 0;
  165. END Bcostat;
  166.  
  167.  
  168.  
  169. PROCEDURE Mediach (dev: sINTEGER): sINTEGER;
  170. BEGIN
  171.  ASSEMBLER
  172.   MOVE.W  dev(A6), -(SP)
  173.   MOVE    #9, -(SP)
  174.   TRAP    #13
  175.   ADDQ.L  #4, SP
  176.   MOVE.W  D0, i
  177.  END;
  178.  RETURN i;
  179. END Mediach;
  180.  
  181.  
  182. PROCEDURE Drvmap (): lBITSET;
  183. BEGIN
  184.  ASSEMBLER
  185.   MOVE    #10, -(SP)
  186.   TRAP    #13
  187.   ADDQ.L  #2, SP
  188.   MOVE.L  D0, lb
  189.  END; 
  190.  RETURN lb;
  191. END Drvmap;
  192.  
  193.  
  194. PROCEDURE Kbshift (keys: sBITSET): sBITSET;
  195. BEGIN
  196.  ASSEMBLER
  197.   MOVE.W  keys(A6), -(SP);
  198.   MOVE    #11, -(SP)
  199.   TRAP    #13
  200.   ADDQ.L  #4, SP
  201.   MOVE.W  D0, b
  202.  END;
  203.  RETURN b;
  204. END Kbshift;
  205.  
  206. END MagicBIOS.
  207.  
  208.